Map Types with ggmap

Jan-Philipp Kolb

Wed Sep 16 08:25:56 2015

Outline

Various map types:

There are more which will be presented next week…

The R-package ggmap will be used in the following to produce different types of maps with the command qmap

Road maps

pic Source

A road map is one of the most widely used map types.

Road maps

Install the library

  1. possibility
install.packages("ggmap")
  1. possibility:

pic

pic

Library ggmap - Hello world

library(ggmap)
qmap("Mannheim")

Map for a sight

qmap("Berlin Brandenburger Tor")

Map for a whole country

qmap("Germany")

Use another zoom level

qmap("Germany", zoom = 6)

Get help with the questionmark

?qmap

Different components in the help

The examples section of help

Extract from the help file on qmap:

pic

This examples can be directly copy-pasted to the console

qmap("baylor university")
qmap("baylor university", zoom = 14)
# and so on

Other zoom level

qmap("Mannheim", zoom = 12)

Get closer

qmap('Mannheim', zoom = 13)

Get very close

qmap('Mannheim', zoom = 20)

ggmap - source OpenStreetMap

qmap('Mannheim', zoom = 14, source="osm")

ggmap - OpenStreetMap - black/white

qmap('Mannheim', zoom = 14, source="osm",color="bw")

ggmap - maptype satellite

qmap('Mannheim', zoom = 14, maptype="satellite")

ggmap - maptype satellite zoom 21

qmap('Mannheim', zoom = 21, maptype="hybrid")

ggmap - maptype hybrid

qmap("Mannheim", zoom = 14, maptype="hybrid")

Terrain/physical maps

Physical maps illustrate the physical features of an area, such as the mountains, rivers and lakes. Colors are used to show relief differences in land elevations.

ggmap - terrain map

qmap('Schriesheim', zoom = 14,
 maptype="terrain")

Abstracted maps

pic

Source: Design faves

ggmap - maptype watercolor

qmap('Mannheim', zoom = 14,
 maptype="watercolor",source="stamen")

ggmap - source stamen

qmap('Mannheim', zoom = 14,
 maptype="toner",source="stamen")

ggmap - maptype toner-lite

qmap('Mannheim', zoom = 14,
 maptype="toner-lite",source="stamen")

ggmap - maptype toner-hybrid

qmap('Mannheim', zoom = 14,
 maptype="toner-hybrid",source="stamen")

ggmap - maptype terrain-lines

qmap('Mannheim', zoom = 14,
 maptype="terrain-lines",source="stamen")

Stamen maps

These high-contrast B+W (black and white) maps are featured in our Dotspotting project. They are perfect for data mashups and exploring river meanders and coastal zones.

Source: http://maps.stamen.com/

Save graphics

pic

ggmap - create an object

MA_map <- qmap('Mannheim', 
               zoom = 14,
               maptype="toner",
               source="stamen")

Geocoding

Geocoding (…) uses a description of a location, most typically a postal address or place name, to find geographic coordinates from spatial reference data …

Wikipedia - Geocoding

library(ggmap)
geocode("Mannheim Wasserturm",source="google")
lon lat
8.462233 49.48371

Latitude and Longitude

pic

Source

Coords of different places in Germany

cities lon lat
Hamburg 9.993682 53.55108
Koeln 6.960279 50.93753
Dresden 13.737262 51.05041
Muenchen 11.581981 48.13513

Reverse geocoding

Reverse geocoding is the process of back (reverse) coding of a point location (latitude, longitude) to a readable address or place name. This permits the identification of nearby street addresses, places, and/or areal subdivisions such as neighbourhoods, county, state, or country.

Source: Wikipedia

revgeocode(c(48,8))
## [1] "Qoriley Rd, Somalia"

Get the distance between 2 points

mapdist("Q1, 4 Mannheim","B2, 1 Mannheim")
##             from             to   m    km     miles seconds  minutes
## 1 Q1, 4 Mannheim B2, 1 Mannheim 746 0.746 0.4635644     211 3.516667
##        hours
## 1 0.05861111
mapdist("Q1, 4 Mannheim","B2, 1 Mannheim",mode="walking")
##             from             to   m    km     miles seconds minutes
## 1 Q1, 4 Mannheim B2, 1 Mannheim 546 0.546 0.3392844     420       7
##       hours
## 1 0.1166667

Get another distance

mapdist("Q1, 4 Mannheim","B2, 1 Mannheim",mode="bicycling")
##             from             to   m    km    miles seconds  minutes
## 1 Q1, 4 Mannheim B2, 1 Mannheim 555 0.555 0.344877     215 3.583333
##        hours
## 1 0.05972222

Take Home Messages/Homework

What you should know:

Homework:

And now some more advanced stuff….

Geocoding - various points of interest

POI1 <- geocode("B2, 1 Mannheim",source="google")
POI2 <- geocode("Hbf Mannheim",source="google")
POI3 <- geocode("Wasserturm Mannheim",source="google")
ListPOI <-rbind(POI1,POI2,POI3)
POI1;POI2;POI3
##        lon      lat
## 1 8.462844 49.48569
##        lon      lat
## 1 8.469879 49.47972
##        lon      lat
## 1 8.473664 49.48483

Points in map

MA_map +
geom_point(aes(x = lon, y = lat),
data = ListPOI)

Points in map

MA_map +
geom_point(aes(x = lon, y = lat),col="red",
data = ListPOI)

ggmap - adding different colors

ListPOI$color <- c("A","B","C")
MA_map +
geom_point(aes(x = lon, y = lat,col=color),
data = ListPOI)

ggmap - bigger dots

ListPOI$size <- c(10,20,30)
MA_map +
geom_point(aes(x = lon, y = lat,col=color,size=size),
data = ListPOI)

Get a route from Google maps

from <- "Mannheim Hbf"
to <- "Mannheim B2 , 1"
route_df <- route(from, to, structure = "route")

More information

Draw a map with this information

qmap("Mannheim Hbf", zoom = 14) +
  geom_path(
    aes(x = lon, y = lat),  colour = "red", size = 1.5,
    data = route_df, lineend = "round"
  )

Resources

More about adding points

pic

Cheatsheet

pic

Resources and literature

ggmap: Spatial Visualization with ggplot2

by David Kahle and Hadley Wickham